import javax.sound.midi.Soundbank;

/**
 * @Description: 有效的完全平方数
 * 给定一个 正整数 num ，编写一个函数，如果 num 是一个完全平方数，
 * 则返回 true ，否则返回 false 。
 * 进阶：不要 使用任何内置的库函数，如  sqrt 。
 * @Date:Create in 10:46  2022/6/17
 */
public class isPerfectSquare0367 {
    public static void main(String[] args) {
        int num = 16;
        System.out.println(isPerfectSquare1(num));
    }

    //二分查找
    public static boolean isPerfectSquare1(int num) {
        if (num == 1) return true;

        int l = 0, r = num, ans = -1;

        while (l <= r) {
            int mid = l + (r - l) / 2;
            if ((long) mid * mid <= num) {
                ans = mid;
                l = mid + 1;
            } else {
                r = mid - 1;
            }
        }
        System.out.println(ans);
        if ((long) ans * ans == num) {
            return true;
        } else {
            return false;
        }
    }

    //牛顿法迭代
    public static boolean isPerfectSquare2(int num) {
        double x0 = num;
        while (true) {
            double x1 = (x0 + num / x0) / 2;
            if (x0 - x1 < 1e-6) {
                break;
            }
            x0 = x1;
        }
        int x = (int) x0;
        return x * x == num;
    }


}
